﻿using ProyectoDeTesis.Controladores;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ProyectoDeTesis.Vistas
{
    public partial class AprobarTareas : Form
    {
        private int pantalla_id = 31;
        private int vuelo_id = 0;
        private VueloController vueloController = new VueloController();
        private List<ProyectoDeTesis.Vuelo> listaVuelo = new List<ProyectoDeTesis.Vuelo>();

        public AprobarTareas()
        {
            InitializeComponent();
            rdtFecha.Value = DateTime.Now.Date;
        }

        private void dgvResultados_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1)
            {
                DataGridViewRow row = dgvResultados.Rows[e.RowIndex];

                vuelo_id = Convert.ToInt32(row.Cells[0].Value);
            }
        }

        private void BtnAprobarTodos_Click(object sender, EventArgs e)
        {
            if (listaVuelo.Count > 0)
            {
                List<int> listaVueloIds = new List<int>();
                foreach (ProyectoDeTesis.Vuelo v in listaVuelo)
                {
                    listaVueloIds.Add(v.id);
                }

                vueloController.aprobarVuelosAsignados(listaVueloIds);
                FormAceptar form = new FormAceptar("Se aprobaron los vuelos correctamente.");
                form.ShowDialog(this);
                BuscarVuelosAsignadosNoAprobados();
            }
            else
            {
                FormError form = new FormError("Debe hacer una búsqueda primero.");
                form.ShowDialog(this);
            }
        }

        private void btnlimpiar_Click(object sender, EventArgs e)
        {
            rdtFecha.Value = DateTime.Now.Date;
        }

        private void btnbuscar_Click(object sender, EventArgs e)
        {
            BuscarVuelosAsignadosNoAprobados();
        }

        private void BuscarVuelosAsignadosNoAprobados()
        {
            DateTime fecha = rdtFecha.Value;

            listaVuelo = vueloController.obtenerVuelosAsignadosNoAprobados(fecha);

            if (listaVuelo.Count > 0)
            {
                BindingSource bindingSource1 = new BindingSource();

                bindingSource1.DataSource = (from v in listaVuelo
                                             select new { v.id, v.num_vuelo, v.PerfilPersonal.nombre, v.PerfilPersonal.ap_paterno, v.PerfilPersonal.ap_materno, v.fecha_salida, v.hora_salida });

                dgvResultados.DataSource = bindingSource1;

                formatearTabla(dgvResultados);
            }
            else
            {
                dgvResultados.DataSource = null;
            }
        }

        private void formatearTabla(DataGridView dgvResultados)
        {
            dgvResultados.Columns[0].Visible = false;
            dgvResultados.Columns[1].HeaderText = "Número de vuelo";
            dgvResultados.Columns[2].HeaderText = "Nombres";
            dgvResultados.Columns[3].HeaderText = "Apellido Paterno";
            dgvResultados.Columns[4].HeaderText = "Apellido Materno";
            dgvResultados.Columns[5].HeaderText = "Fecha Salida";
            dgvResultados.Columns[6].HeaderText = "Hora Salida";

            dgvResultados.Columns[1].Width = 80;
            dgvResultados.Columns[2].Width = 130;
            dgvResultados.Columns[3].Width = 180;
            dgvResultados.Columns[4].Width = 180;
            dgvResultados.Columns[5].Width = 90;
            dgvResultados.Columns[6].Width = 90;
        }

        private void btnaprobar_Click(object sender, EventArgs e)
        {
            if (this.vuelo_id > 0)
            {
                vueloController.aprobarVueloAsignado(vuelo_id);
                FormAceptar form = new FormAceptar("Se aprobo el vuelo correctamente.");
                form.ShowDialog(this);
                BuscarVuelosAsignadosNoAprobados();
            }
            else
            {
                FormError form = new FormError("Debe seleccionar una fila primero.");
                form.ShowDialog(this);
            }
        }
    }
}





